Rust におけるマクロ
これによりコードの構造を認識することが可能なので、マクロでよく起こりがちな問題(e.g. キャプチャ)を回避できる 2 種類のマクロ
マクロへの入力に基づいて、プログラムに任意のコードを挿入する(e.g. println! マクロ)
パースされたトークンに基づいて、プログラムに任意のコードを挿入する(e.g. derive マクロ)
これにより 動的型付け言語 のような表現力を得つつ、コンパイル時の安全性は保証される 定義時、利用する場所とは別の独立した(proc-macro = true をセットした)クレートとして定義する必要がある
手続き的マクロは更に 3 つの種類に分かれる
2. 属性マクロ: プログラムの何らかの文法要素に付与する